// pages/admin-tasks/admin-tasks.js
const { apiService } = require('../../utils/api')
const { showSuccess, showError, showLoading, hideLoading } = require('../../utils/util')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    tasks: [],
    loading: false,
    hasMore: true,
    pageNum: 1,
    pageSize: 10,
    searchKeyword: '',
    statusFilter: -1, // -1: 全部, 0: 待认领, 1: 进行中, 2: 待审核, 3: 已完成, 4: 已驳回
    statusOptions: [
      { value: -1, label: '全部状态' },
      { value: 0, label: '待认领' },
      { value: 1, label: '进行中' },
      { value: 2, label: '待审核' },
      { value: 3, label: '已完成' },
      { value: 4, label: '已驳回' }
    ],
    showTaskDetail: false,
    currentTask: null,
    showReviewModal: false,
    reviewData: {
      taskId: null,
      status: 3, // 3: 通过, 4: 驳回
      remark: ''
    },
    totalTasks: 0,
    pendingTasks: 0,
    completedTasks: 0,
    statsLoading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadTasksStats()
    this.loadTasks()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.loadTasks()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.refreshTasks()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    this.loadMoreTasks()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '任务管理',
      path: '/pages/admin-tasks/admin-tasks'
    }
  },

  /**
   * 加载任务统计数据
   */
  loadTasksStats: function() {
    this.setData({ statsLoading: true })

    apiService.getTasksStats()
      .then((stats) => {
        this.setData({
          totalTasks: stats.total || 0,
          pendingTasks: stats.pending || 0,
          completedTasks: stats.completed || 0,
          statsLoading: false
        })
      })
      .catch((error) => {
        console.error('加载任务统计失败:', error)
        this.setData({ statsLoading: false })
      })
  },

  /**
   * 加载任务列表
   */
  loadTasks: function() {
    if (this.data.loading) return

    this.setData({ loading: true })

    const params = {
      pageNum: this.data.pageNum,
      pageSize: this.data.pageSize,
      keyword: this.data.searchKeyword,
      status: this.data.statusFilter === -1 ? null : this.data.statusFilter
    }

    apiService.getTasksList(params)
      .then((result) => {
        const newTasks = result.list || []
        const tasks = this.data.pageNum === 1 ? newTasks : [...this.data.tasks, ...newTasks]

        this.setData({
          tasks: tasks,
          hasMore: newTasks.length === this.data.pageSize,
          loading: false
        })
      })
      .catch((error) => {
        this.setData({ loading: false })
        showError(error.message || '加载任务列表失败')
      })
  },

  /**
   * 刷新任务列表
   */
  refreshTasks: function() {
    this.setData({
      tasks: [],
      pageNum: 1,
      hasMore: true
    })
    this.loadTasks()
    this.loadTasksStats()
  },

  /**
   * 加载更多任务
   */
  loadMoreTasks: function() {
    if (!this.data.hasMore || this.data.loading) return

    this.setData({
      pageNum: this.data.pageNum + 1
    })
    this.loadTasks()
  },

  /**
   * 搜索输入处理
   */
  onSearchInput: function(e) {
    this.setData({
      searchKeyword: e.detail.value
    })
  },

  /**
   * 执行搜索
   */
  onSearch: function() {
    this.refreshTasks()
  },

  /**
   * 清空搜索
   */
  onClearSearch: function() {
    this.setData({
      searchKeyword: ''
    })
    this.refreshTasks()
  },

  /**
   * 状态筛选变化
   */
  onStatusFilterChange: function(e) {
    const value = parseInt(e.detail.value)
    this.setData({
      statusFilter: value
    })
    this.refreshTasks()
  },

  /**
   * 显示任务详情
   */
  showTaskDetail: function(e) {
    const taskId = e.currentTarget.dataset.id
    const task = this.data.tasks.find(t => t.id === taskId)

    if (task) {
      this.setData({
        showTaskDetail: true,
        currentTask: task
      })
    }
  },

  /**
   * 隐藏任务详情
   */
  hideTaskDetail: function() {
    this.setData({
      showTaskDetail: false,
      currentTask: null
    })
  },

  /**
   * 显示审核弹窗
   */
  showReviewModal: function(e) {
    const taskId = e.currentTarget.dataset.id
    const task = this.data.tasks.find(t => t.id === taskId)

    if (task && task.status === 2) { // 只有待审核状态才能审核
      this.setData({
        showReviewModal: true,
        reviewData: {
          taskId: taskId,
          status: 3,
          remark: ''
        }
      })
    }
  },

  /**
   * 隐藏审核弹窗
   */
  hideReviewModal: function() {
    this.setData({
      showReviewModal: false,
      reviewData: {
        taskId: null,
        status: 3,
        remark: ''
      }
    })
  },

  /**
   * 审核结果选择
   */
  onReviewStatusChange: function(e) {
    const value = parseInt(e.detail.value)
    this.setData({
      'reviewData.status': value
    })
  },

  /**
   * 审核备注输入
   */
  onReviewRemarkInput: function(e) {
    this.setData({
      'reviewData.remark': e.detail.value
    })
  },

  /**
   * 提交审核
   */
  submitReview: function() {
    const { reviewData } = this.data

    if (!reviewData.taskId) return

    if (reviewData.status === 4 && !reviewData.remark.trim()) {
      showError('驳回时必须填写审核意见')
      return
    }

    showLoading('审核中...')

    apiService.reviewTask(reviewData.taskId, {
      status: reviewData.status,
      remark: reviewData.remark
    })
      .then(() => {
        hideLoading()
        showSuccess('审核完成')
        this.hideReviewModal()
        this.refreshTasks()
      })
      .catch((error) => {
        hideLoading()
        showError(error.message || '审核失败')
      })
  },

  /**
   * 重新分配任务
   */
  reassignTask: function(e) {
    const taskId = e.currentTarget.dataset.id
    const task = this.data.tasks.find(t => t.id === taskId)

    if (!task) return

    wx.showModal({
      title: '确认重新分配',
      content: `确定要重新分配任务"${task.productName}"吗？任务将重置为待认领状态。`,
      success: (res) => {
        if (res.confirm) {
          showLoading('重新分配中...')

          apiService.reclaimTask(taskId)
            .then(() => {
              hideLoading()
              showSuccess('任务重新分配成功')
              this.refreshTasks()
            })
            .catch((error) => {
              hideLoading()
              showError(error.message || '重新分配失败')
            })
        }
      }
    })
  },

  /**
   * 获取状态文本
   */
  getStatusText: function(status) {
    const statusMap = {
      0: '待认领',
      1: '进行中',
      2: '待审核',
      3: '已完成',
      4: '已驳回'
    }
    return statusMap[status] || '未知'
  },

  /**
   * 获取状态样式类
   */
  getStatusClass: function(status) {
    const classMap = {
      0: 'status-pending',
      1: 'status-processing',
      2: 'status-review',
      3: 'status-completed',
      4: 'status-rejected'
    }
    return classMap[status] || ''
  },

  /**
   * 格式化时间
   */
  formatTime: function(timestamp) {
    if (!timestamp) return ''
    const date = new Date(timestamp)
    return date.toLocaleString()
  }
})

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})